/* 
 * File:   SnowBall.cpp
 * Author: mauro
 * 
 * Created on 18 de noviembre de 2014, 18:39
 */

#include "SnowBall.h"

SnowBall::SnowBall(ObjFactory *objFactory, float posX, float posY, int dire) {
    this->contacBullet = false;
    this->contacFloor = false;
//     this->inWorld = false; //eliminar
    int scale = 20;
    int mass = 1;
    int idImage = 1;
    int distAlPersonaje = 1.1f;
    float inpulseX = 11.0f;
    float inpulseY = -0.0f;
    //Es necesario que la pelota se cree fuera del personaje.
    float x = 0;
    float y = posY -0.1;
    //datos para setear un impulso. Izquierda o derecha 
    b2Vec2 inpulse(0.0f, 0.0f);
    if (dire == SHOOTLEFT) {
        inpulse.Set(-inpulseX, inpulseY);
        x = posX - distAlPersonaje;
    } else if (dire == SHOOTRIGHT) {
        inpulse.Set(inpulseX, inpulseY);
        x = posX + distAlPersonaje;
    }
    //#NOTA: falta agregar el tipo de imagen (id)    
    Circle *circle = new Circle(objFactory, false, x * 100, y * 100, scale, mass, idImage);
    this->circle = circle;
    //seteo id objeto
    this->circle->setObjectId(BULLET);

    b2Body * body = circle->getObject()->getBody();
    //se aplica al centro del circulo
    b2Vec2 pos(body->GetWorldCenter().x, body->GetWorldCenter().y);
    body->ApplyLinearImpulse(inpulse, pos, true);
    // Bullet = true, caracteristica necesaria para una bala.
    body->SetBullet(true);   
   
    //seteo USERDATA para el contacto con los otros elemento del mundo de box2d    
    b2Fixture* fixtt = body->GetFixtureList();
    fixtt->SetUserData((void*) IS_BULLET);        
}

SnowBall::~SnowBall() {
}

